// 创建公众号对象
const eventHub = {
  // 创建缓存列表
  list: {
    // click:[f1,f2]
  },
  // 订阅
  on: (name, fn) => {
    // 如果对象中没有对应的 event 值，也就是说明没有订阅过，就给 event 创建个缓存列表
    // 如有对象中有相应的 event 值，把 fn 添加到对应 event 的缓存列表里
    eventHub.list[name] = eventHub.list[name] || []
    eventHub.list[name].push(fn)
  },
  // 发布
  emit: (name, data) => {
    const q = eventHub.list[name]
    //如果缓存列表里面为空，就返回
    if (!q) return
    //遍历当前event里的缓存列表，并且依次执行
    // eslint-disable-next-line no-useless-call
    q.map((f) => f.call(null, data))
    return undefined
  },
  off: (name, fn) => {
    const q = eventHub.list[name]
    //如果缓存列表里面为空，就返回
    if (!q) return
    //如果有，找到当前缓存列表里面对应的标号，并删除
    const index = q.indexOf(fn)
    if (index < 0) return
    q.splice(index, 1)
  }
}
export default eventHub
